## API Report File for "@backstage/plugin-scaffolder"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts
/// <reference types="react" />

import { ApiHolder } from '@backstage/core-plugin-api';
import { ApiRef } from '@backstage/core-plugin-api';
import { BackstagePlugin } from '@backstage/core-plugin-api';
import { ComponentType } from 'react';
import { createScaffolderFieldExtension as createScaffolderFieldExtension_2 } from '@backstage/plugin-scaffolder-react';
import { createScaffolderLayout as createScaffolderLayout_2 } from '@backstage/plugin-scaffolder-react';
import { CustomFieldExtensionSchema as CustomFieldExtensionSchema_2 } from '@backstage/plugin-scaffolder-react';
import { CustomFieldValidator as CustomFieldValidator_2 } from '@backstage/plugin-scaffolder-react';
import { DiscoveryApi } from '@backstage/core-plugin-api';
import { ExternalRouteRef } from '@backstage/core-plugin-api';
import { FetchApi } from '@backstage/core-plugin-api';
import { FieldExtensionComponent as FieldExtensionComponent_2 } from '@backstage/plugin-scaffolder-react';
import { FieldExtensionComponentProps as FieldExtensionComponentProps_2 } from '@backstage/plugin-scaffolder-react';
import { FieldExtensionOptions as FieldExtensionOptions_2 } from '@backstage/plugin-scaffolder-react';
import { FieldValidation } from '@rjsf/utils';
import { FormProps } from '@backstage/plugin-scaffolder-react';
import { IdentityApi } from '@backstage/core-plugin-api';
import { JSX as JSX_2 } from 'react';
import { LayoutOptions as LayoutOptions_2 } from '@backstage/plugin-scaffolder-react';
import { LayoutTemplate as LayoutTemplate_2 } from '@backstage/plugin-scaffolder-react';
import { ListActionsResponse as ListActionsResponse_2 } from '@backstage/plugin-scaffolder-react';
import { LogEvent as LogEvent_2 } from '@backstage/plugin-scaffolder-react';
import { Observable } from '@backstage/types';
import { PathParams } from '@backstage/core-plugin-api';
import { PropsWithChildren } from 'react';
import { default as React_2 } from 'react';
import { ReactNode } from 'react';
import { ReviewStepProps } from '@backstage/plugin-scaffolder-react';
import { RouteRef } from '@backstage/core-plugin-api';
import { ScaffolderApi as ScaffolderApi_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderDryRunOptions as ScaffolderDryRunOptions_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderDryRunResponse as ScaffolderDryRunResponse_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderGetIntegrationsListOptions as ScaffolderGetIntegrationsListOptions_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderGetIntegrationsListResponse as ScaffolderGetIntegrationsListResponse_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderOutputLink } from '@backstage/plugin-scaffolder-react';
import { ScaffolderScaffoldOptions as ScaffolderScaffoldOptions_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderScaffoldResponse as ScaffolderScaffoldResponse_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderStreamLogsOptions as ScaffolderStreamLogsOptions_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderTask as ScaffolderTask_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderTaskOutput as ScaffolderTaskOutput_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderTaskStatus as ScaffolderTaskStatus_2 } from '@backstage/plugin-scaffolder-react';
import { ScaffolderUseTemplateSecrets as ScaffolderUseTemplateSecrets_2 } from '@backstage/plugin-scaffolder-react';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { SubRouteRef } from '@backstage/core-plugin-api';
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
import { TemplateGroupFilter } from '@backstage/plugin-scaffolder-react';
import { TemplateListPageProps } from '@backstage/plugin-scaffolder/alpha';
import { TemplateParameterSchema as TemplateParameterSchema_2 } from '@backstage/plugin-scaffolder-react';
import { TemplateWizardPageProps } from '@backstage/plugin-scaffolder/alpha';
import { z } from 'zod';

// @public @deprecated (undocumented)
export const createScaffolderFieldExtension: typeof createScaffolderFieldExtension_2;

// @public @deprecated (undocumented)
export const createScaffolderLayout: typeof createScaffolderLayout_2;

// @public @deprecated (undocumented)
export type CustomFieldExtensionSchema = CustomFieldExtensionSchema_2;

// @public @deprecated (undocumented)
export type CustomFieldValidator<TReturnFieldData> =
  CustomFieldValidator_2<TReturnFieldData>;

// @public
export const EntityNamePickerFieldExtension: FieldExtensionComponent_2<
  string,
  {}
>;

// @public
export const EntityPickerFieldExtension: FieldExtensionComponent_2<
  string,
  {
    allowedKinds?: string[] | undefined;
    defaultKind?: string | undefined;
    allowArbitraryValues?: boolean | undefined;
    defaultNamespace?: string | false | undefined;
    catalogFilter?:
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >[]
      | undefined;
  }
>;

// @public (undocumented)
export const EntityPickerFieldSchema: FieldSchema<
  string,
  {
    allowedKinds?: string[] | undefined;
    defaultKind?: string | undefined;
    allowArbitraryValues?: boolean | undefined;
    defaultNamespace?: string | false | undefined;
    catalogFilter?:
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >[]
      | undefined;
  }
>;

// @public
export type EntityPickerUiOptions =
  typeof EntityPickerFieldSchema.uiOptionsType;

// @public
export const EntityTagsPickerFieldExtension: FieldExtensionComponent_2<
  string[],
  {
    kinds?: string[] | undefined;
    showCounts?: boolean | undefined;
    helperText?: string | undefined;
  }
>;

// @public (undocumented)
export const EntityTagsPickerFieldSchema: FieldSchema<
  string[],
  {
    kinds?: string[] | undefined;
    showCounts?: boolean | undefined;
    helperText?: string | undefined;
  }
>;

// @public
export type EntityTagsPickerUiOptions =
  typeof EntityTagsPickerFieldSchema.uiOptionsType;

// @public @deprecated (undocumented)
export type FieldExtensionComponent<_TReturnValue, _TInputProps> =
  FieldExtensionComponent_2<_TReturnValue, _TInputProps>;

// @public @deprecated (undocumented)
export type FieldExtensionComponentProps<
  TFieldReturnValue,
  TUiOptions extends {} = {},
> = FieldExtensionComponentProps_2<TFieldReturnValue, TUiOptions>;

// @public @deprecated (undocumented)
export type FieldExtensionOptions = FieldExtensionOptions_2;

// @public
export interface FieldSchema<TReturn, TUiOptions> {
  // (undocumented)
  readonly schema: CustomFieldExtensionSchema_2;
  // (undocumented)
  readonly type: FieldExtensionComponentProps_2<TReturn, TUiOptions>;
  // (undocumented)
  readonly uiOptionsType: TUiOptions;
}

// @public @deprecated (undocumented)
export type LayoutOptions = LayoutOptions_2;

// @public @deprecated (undocumented)
export type LayoutTemplate = LayoutTemplate_2;

// @public @deprecated (undocumented)
export type ListActionsResponse = ListActionsResponse_2;

// @public @deprecated (undocumented)
export type LogEvent = LogEvent_2;

// @public
export function makeFieldSchemaFromZod<
  TReturnSchema extends z.ZodType,
  TUiOptionsSchema extends z.ZodType = z.ZodType<any, any, {}>,
>(
  returnSchema: TReturnSchema,
  uiOptionsSchema?: TUiOptionsSchema,
): FieldSchema<
  TReturnSchema extends z.ZodType<any, any, infer IReturn> ? IReturn : never,
  TUiOptionsSchema extends z.ZodType<any, any, infer IUiOptions>
    ? IUiOptions
    : never
>;

// @public
export const MultiEntityPickerFieldExtension: FieldExtensionComponent_2<
  string[],
  {
    defaultKind?: string | undefined;
    allowArbitraryValues?: boolean | undefined;
    defaultNamespace?: string | false | undefined;
    catalogFilter?:
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >[]
      | undefined;
  }
>;

// @public
export const MyGroupsPickerFieldExtension: FieldExtensionComponent_2<
  string,
  {
    title?: string | undefined;
    description?: string | undefined;
  }
>;

// @public
export const MyGroupsPickerFieldSchema: FieldSchema<
  string,
  {
    title?: string | undefined;
    description?: string | undefined;
  }
>;

// @public
export const MyGroupsPickerSchema: CustomFieldExtensionSchema_2;

// @public
export type MyGroupsPickerUiOptions =
  typeof MyGroupsPickerFieldSchema.uiOptionsType;

// @public
export const OwnedEntityPickerFieldExtension: FieldExtensionComponent_2<
  string,
  {
    allowedKinds?: string[] | undefined;
    defaultKind?: string | undefined;
    allowArbitraryValues?: boolean | undefined;
    defaultNamespace?: string | false | undefined;
    catalogFilter?:
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >[]
      | undefined;
  }
>;

// @public (undocumented)
export const OwnedEntityPickerFieldSchema: FieldSchema<
  string,
  {
    allowedKinds?: string[] | undefined;
    defaultKind?: string | undefined;
    allowArbitraryValues?: boolean | undefined;
    defaultNamespace?: string | false | undefined;
    catalogFilter?:
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >[]
      | undefined;
  }
>;

// @public
export type OwnedEntityPickerUiOptions =
  typeof OwnedEntityPickerFieldSchema.uiOptionsType;

// @public
export const OwnerPickerFieldExtension: FieldExtensionComponent_2<
  string,
  {
    allowedKinds?: string[] | undefined;
    allowArbitraryValues?: boolean | undefined;
    defaultNamespace?: string | false | undefined;
    catalogFilter?:
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >[]
      | undefined;
  }
>;

// @public (undocumented)
export const OwnerPickerFieldSchema: FieldSchema<
  string,
  {
    allowedKinds?: string[] | undefined;
    allowArbitraryValues?: boolean | undefined;
    defaultNamespace?: string | false | undefined;
    catalogFilter?:
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >
      | Record<
          string,
          | string
          | string[]
          | {
              exists?: boolean | undefined;
            }
        >[]
      | undefined;
  }
>;

// @public
export type OwnerPickerUiOptions = typeof OwnerPickerFieldSchema.uiOptionsType;

// @public
export const repoPickerValidation: (
  value: string,
  validation: FieldValidation,
  context: {
    apiHolder: ApiHolder;
  },
) => void;

// @public
export const RepoUrlPickerFieldExtension: FieldExtensionComponent_2<
  string,
  {
    allowedHosts?: string[] | undefined;
    allowedOrganizations?: string[] | undefined;
    allowedOwners?: string[] | undefined;
    allowedProjects?: string[] | undefined;
    allowedRepos?: string[] | undefined;
    requestUserCredentials?:
      | {
          secretsKey: string;
          additionalScopes?:
            | {
                gitea?: string[] | undefined;
                gerrit?: string[] | undefined;
                github?: string[] | undefined;
                gitlab?: string[] | undefined;
                bitbucket?: string[] | undefined;
                azure?: string[] | undefined;
              }
            | undefined;
        }
      | undefined;
  }
>;

// @public (undocumented)
export const RepoUrlPickerFieldSchema: FieldSchema<
  string,
  {
    allowedHosts?: string[] | undefined;
    allowedOrganizations?: string[] | undefined;
    allowedOwners?: string[] | undefined;
    allowedProjects?: string[] | undefined;
    allowedRepos?: string[] | undefined;
    requestUserCredentials?:
      | {
          secretsKey: string;
          additionalScopes?:
            | {
                gitea?: string[] | undefined;
                gerrit?: string[] | undefined;
                github?: string[] | undefined;
                gitlab?: string[] | undefined;
                bitbucket?: string[] | undefined;
                azure?: string[] | undefined;
              }
            | undefined;
        }
      | undefined;
  }
>;

// @public
export type RepoUrlPickerUiOptions =
  typeof RepoUrlPickerFieldSchema.uiOptionsType;

export { ReviewStepProps };

// @public @deprecated (undocumented)
export const rootRouteRef: RouteRef<undefined>;

// @public
export type RouterProps = {
  components?: {
    ReviewStepComponent?: React_2.ComponentType<ReviewStepProps>;
    TemplateCardComponent?: React_2.ComponentType<{
      template: TemplateEntityV1beta3;
    }>;
    TaskPageComponent?: React_2.ComponentType<PropsWithChildren<{}>>;
    EXPERIMENTAL_TemplateOutputsComponent?: React_2.ComponentType<{
      output?: ScaffolderTaskOutput_2;
    }>;
    EXPERIMENTAL_TemplateListPageComponent?: React_2.ComponentType<TemplateListPageProps>;
    EXPERIMENTAL_TemplateWizardPageComponent?: React_2.ComponentType<TemplateWizardPageProps>;
  };
  groups?: TemplateGroupFilter[];
  templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
  headerOptions?: {
    pageTitleOverride?: string;
    title?: string;
    subtitle?: string;
  };
  defaultPreviewTemplate?: string;
  formProps?: FormProps;
  contextMenu?: {
    editor?: boolean;
    actions?: boolean;
    tasks?: boolean;
  };
};

// @public @deprecated (undocumented)
export type ScaffolderApi = ScaffolderApi_2;

// @public @deprecated (undocumented)
export const scaffolderApiRef: ApiRef<ScaffolderApi_2>;

// @public
export class ScaffolderClient implements ScaffolderApi_2 {
  constructor(options: {
    discoveryApi: DiscoveryApi;
    fetchApi: FetchApi;
    identityApi?: IdentityApi;
    scmIntegrationsApi: ScmIntegrationRegistry;
    useLongPollingLogs?: boolean;
  });
  // (undocumented)
  cancelTask(taskId: string): Promise<void>;
  // (undocumented)
  dryRun(
    options: ScaffolderDryRunOptions_2,
  ): Promise<ScaffolderDryRunResponse_2>;
  // (undocumented)
  getIntegrationsList(
    options: ScaffolderGetIntegrationsListOptions_2,
  ): Promise<ScaffolderGetIntegrationsListResponse_2>;
  // (undocumented)
  getTask(taskId: string): Promise<ScaffolderTask_2>;
  // (undocumented)
  getTemplateParameterSchema(
    templateRef: string,
  ): Promise<TemplateParameterSchema_2>;
  // (undocumented)
  listActions(): Promise<ListActionsResponse_2>;
  // (undocumented)
  listTasks(options: { filterByOwnership: 'owned' | 'all' }): Promise<{
    tasks: ScaffolderTask_2[];
  }>;
  // (undocumented)
  scaffold(
    options: ScaffolderScaffoldOptions_2,
  ): Promise<ScaffolderScaffoldResponse_2>;
  // (undocumented)
  streamLogs(options: ScaffolderStreamLogsOptions_2): Observable<LogEvent_2>;
}

// @public @deprecated (undocumented)
export type ScaffolderDryRunOptions = ScaffolderDryRunOptions_2;

// @public @deprecated (undocumented)
export type ScaffolderDryRunResponse = ScaffolderDryRunResponse_2;

// @public @deprecated (undocumented)
export const ScaffolderFieldExtensions: ComponentType<{
  children?: ReactNode;
}>;

// @public @deprecated (undocumented)
export type ScaffolderGetIntegrationsListOptions =
  ScaffolderGetIntegrationsListOptions_2;

// @public @deprecated (undocumented)
export type ScaffolderGetIntegrationsListResponse =
  ScaffolderGetIntegrationsListResponse_2;

// @public @deprecated (undocumented)
export const ScaffolderLayouts: ComponentType<{
  children?: ReactNode;
}>;

// @public @deprecated (undocumented)
export type ScaffolderOutputlink = ScaffolderOutputLink;

// @public
export const ScaffolderPage: (
  props: PropsWithChildren<RouterProps>,
) => JSX_2.Element;

// @public
export const scaffolderPlugin: BackstagePlugin<
  {
    root: RouteRef<undefined>;
    selectedTemplate: SubRouteRef<
      PathParams<'/templates/:namespace/:templateName'>
    >;
    ongoingTask: SubRouteRef<PathParams<'/tasks/:taskId'>>;
    actions: SubRouteRef<undefined>;
    listTasks: SubRouteRef<undefined>;
    edit: SubRouteRef<undefined>;
  },
  {
    registerComponent: ExternalRouteRef<undefined, true>;
    viewTechDoc: ExternalRouteRef<
      {
        name: string;
        kind: string;
        namespace: string;
      },
      true
    >;
  }
>;

// @public @deprecated (undocumented)
export type ScaffolderScaffoldOptions = ScaffolderScaffoldOptions_2;

// @public @deprecated (undocumented)
export type ScaffolderScaffoldResponse = ScaffolderScaffoldResponse_2;

// @public @deprecated (undocumented)
export type ScaffolderStreamLogsOptions = ScaffolderStreamLogsOptions_2;

// @public @deprecated (undocumented)
export type ScaffolderTask = ScaffolderTask_2;

// @public @deprecated (undocumented)
export type ScaffolderTaskOutput = ScaffolderTaskOutput_2;

// @public @deprecated (undocumented)
export type ScaffolderTaskStatus = ScaffolderTaskStatus_2;

// @public @deprecated (undocumented)
export type ScaffolderUseTemplateSecrets = ScaffolderUseTemplateSecrets_2;

// @public (undocumented)
export const TaskPage: (props: {
  TemplateOutputsComponent?: React_2.ComponentType<{
    output?: ScaffolderTaskOutput_2;
  }>;
}) => React_2.JSX.Element;

// @public @deprecated
export type TaskPageProps = {
  loadingText?: string;
};

// @public @deprecated (undocumented)
export type TemplateParameterSchema = TemplateParameterSchema_2;

// @public
export const TemplateTypePicker: () => React_2.JSX.Element | null;

// @public @deprecated (undocumented)
export const useTemplateSecrets: () => ScaffolderUseTemplateSecrets_2;
```
